
var person={
    name:'colin',
    age:19
};

Object.seal(person);//person对象的属性将不能被删除，也不能增加其他属性，但可以对属性值进行修改
Object.freeze(person);//person对象被冻结，属性不能增加，修改和删除操作

//defineProperty 可以冻结单个属性,name属性的值不能更改
Object.defineProperty(person,'name',{
    writable:false,
    value:44
});


Object.defineProperty(person,'name',{
    get:function () {
      //当外界访问person属性的时候会触发
    },
    set:function () {
        //当外界修改person属性的时候会触发
    }
});

//使用proxy代理可以实现对对象属性的监听
var proxy=new Proxy(person,{
    get:function (target,key,proxy) {
        console.log('访问我了'+key)
    },
    set:function (target,key,value) {
        console.log("修改"+key+"为"+value)
    }
});